#ifndef _DRAWMANAGER_H
#define _DRAWMANAGER_H

#include "SubManager.h"
#include <allegro.h>
#include <map>

class Entity;

/*
 * This class is to act as a facade for serveral other 
 * DrawManagers, each specialized in their own field.
 * Calling this manager will invoke these specialized
 * managers as well.
 */
class DrawManager{
    public:
        DrawManager();

        enum EntityType{
            STATIC,
            CHAR
        };

        /*
         * Draw all entities to the specified bitmap.
         * Does not draw inactive entities.
         */
        void drawAll(BITMAP *);

        /*
         * Add an entity to be drawn when drawAll() is
         * called.
         */
        void addEntity(Entity *, EntityType);

        /*
         * Remove an entity, causing it not to be drawn
         * any more. The object does not cease to exist.
         */
        void removeEntity(Entity *);

        /*
         * Return the total number of entities.
         */
        int getCount();

    private:
        std::map<EntityType, SubManager *> mManagers;
};
#endif
